import { request } from '../request';

/** 日历管理相关API */

// 日历数据类型定义
export interface Holiday {
  id?: number;
  currencyCode: string;
  holidayDate: string;
  dayType: number; // 0-假日，1-调休工作日
  holidayNameEn?: string;
  createTime?: string;
  updateTime?: string;
}

// 日期类型枚举
export enum DayType {
  HOLIDAY = 0, // 假日
  WORKDAY = 1 // 调休工作日
}

// 日历搜索参数
export interface HolidaySearchParams {
  current?: number;
  size?: number;
  currencyCode?: string;
  dayType?: number; // 0-假日，1-调休工作日
}

/** 获取所有日历记录列表 */
export function fetchAllHolidays() {
  return request<Holiday[]>({
    url: '/api/calendar/holidays',
    method: 'GET'
  });
}

/**
 * 根据货币代码获取日历记录列表
 *
 * @param currencyCode 货币代码
 */
export function fetchHolidaysByCurrency(currencyCode: string) {
  return request<Holiday[]>({
    url: `/api/calendar/holidays/${currencyCode}`,
    method: 'GET'
  });
}

/**
 * 插入日历记录（假日或调休工作日）
 *
 * @param holiday 日历数据
 */
export function insertHoliday(holiday: Holiday) {
  return request<string>({
    url: '/api/calendar/holidays',
    method: 'POST',
    data: holiday
  });
}

/**
 * 批量插入日历记录（假日或调休工作日）
 *
 * @param holidays 日历数据列表
 */
export function batchInsertHolidays(holidays: Holiday[]) {
  return request<string>({
    url: '/api/calendar/holidays/batch',
    method: 'POST',
    data: holidays
  });
}

/**
 * 删除指定日历记录
 *
 * @param currencyCode 货币代码
 * @param holidayDate 日期 (yyyy-MM-dd格式)
 */
export function deleteHoliday(currencyCode: string, holidayDate: string) {
  return request<string>({
    url: `/api/calendar/holidays/${currencyCode}`,
    method: 'DELETE',
    params: { holidayDate }
  });
}

/**
 * 删除指定货币的所有日历记录
 *
 * @param currencyCode 货币代码
 */
export function deleteHolidaysByCurrency(currencyCode: string) {
  return request<string>({
    url: `/api/calendar/holidays/currency/${currencyCode}`,
    method: 'DELETE'
  });
}

/** 检查日历数据加载状态 */
export function checkCalendarStatus() {
  return request<string>({
    url: '/api/calendar/status',
    method: 'GET'
  });
}
